package com.sjms._13_行为_模板方法;

/**
 * 模板方法
 * 为了避免重复代码
 * 抽象一个父类，定义一套流程，流程中存在多个步骤，，每个步骤存在默认实现
 * 子类继承后，对于可变的部分，子类可以自行重写
 * <p>
 * 抽象一个类，执行流程已经定义完成，抽象类内部存在默认实现，方法可由子类进行覆盖
 * <p>
 * 空实现的价值在于让子类覆盖，让子类（其他人、实现者、第三方）灵活控制
 * <p>
 * 代码实现：制作不同咖啡
 * 抽象咖啡类
 * 0. final 制作咖啡（1,2（4）3）
 * 1.选咖啡豆()
 * 2.煮咖啡()
 * 3.加配料
 * 条件：是否制作原味咖啡()
 */
public class _Test {

    public static void main(String[] args) {
        ACoffee blackCoffee = new BlackCoffee();
        blackCoffee.create();


        ACoffee originCoffee = new OriginCoffee();
        originCoffee.create();

        ACoffee redDatesCoffee = new RedDatesCoffee();
        redDatesCoffee.create();


    }


}
